package Map_Set;

import java.util.*;

public class 十万个数据 {
    public static void main(String[] args) {
        /**
         * 随机生成 10万 个数据，统计每个数据出现的次数
         * 完成后，只找出重复数据出现的次数
         */
        ArrayList<Integer> list=new ArrayList<>();
        Random random=new Random();
        for (int i = 0; i <10_0000; i++) {
            list.add(random.nextInt(10000));//随机生成 10万 个10000以内的数据
        }

        //  数据    ， 次数
        Map<Integer, Integer> map=new HashMap<>();
        for (Integer key:list) {
            if (map.get(key)==null) {
                //当次数为null，开始第一次存储key
                map.put(key,1);
            }else {
                //key已经存储过，进行次数的增加
                int count=map.get(key)+1;//得到次数+1
                map.put(key,count);
            }
        }

        //只找出重复数据 以及它出现的次数
        for (Map.Entry<Integer,Integer> entry:map.entrySet()) {
            if (entry.getValue()>1) {
                System.out.println("重复数据："+entry.getKey()+" 出现的次数："+entry.getValue());
            }
        }

    }

    public static void main2(String[] args) {
        /**
         * 随机生成 10万 个数据，找到第一个重复的数据
         */
        ArrayList<Integer> list=new ArrayList<>();
        Random random=new Random();
        for (int i = 0; i <10_0000; i++) {
            list.add(random.nextInt(10000));
        }

        Set<Integer> set=new HashSet<>();
        for (int i = 0; i <list.size(); i++) {

            if (set.contains(list.get(i))) {
                System.out.println(list.get(i));
                break;
            }else {
                set.add(list.get(i));
            }
        }
        System.out.println(set.size());
    }

    public static void main3(String[] args) {
        /**
         * 随机生成 10万 个数据，去掉所有重复的数据
         */
        ArrayList<Integer> list=new ArrayList<>();
        Random random=new Random();
        for (int i=0;i<10_0000;i++) {
            list.add(random.nextInt(10000));//随机数据不超过10000
        }

        HashSet<Integer> set=new HashSet<>();
        for (int i = 0; i < list.size(); i++) {
            set.add(list.get(i));
        }
        System.out.println(set);
    }

}
